package com.tanhua.server.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.tanhua.common.mapper.UserInfoMapper;
import com.tanhua.common.pojo.UserInfo;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;
import com.tanhua.server.vo.RecommendUserQueryParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;

/**
 * 用户基本信息
 */
@Service
public class UserInfoService {

    @Autowired
    private UserInfoMapper userInfoMapper;

    /**
     * 根据请求查询条件查询用户基本信息
     *
     * @param userIds    查询用户id集合
     * @param queryParam 请求查询条件
     * @return 用户基本信息集合
     */
    public List<UserInfo> queryUserInfoList(Set<Long> userIds, RecommendUserQueryParam queryParam) {
        // 创建查询条件构建器
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();

        // 具体查询条件
        // 用户id
        queryWrapper.in("user_id", userIds);
/*
        // 用户性别
        if (StringUtils.isNotEmpty(queryParam.getGender())) {
            queryWrapper.eq("sex", StringUtils.equals(queryParam.getGender(), "man") ? 1 : 2);
        }
        // 用户年龄【小于等于】
        if (queryParam.getAge() != null) {
            queryWrapper.le("age", queryParam.getAge());
        }
        // 居住地
        if (StringUtils.isNotEmpty(queryParam.getCity())) {
            queryWrapper.like("city", queryParam.getCity());
        }
*/

        List<UserInfo> userInfoList = userInfoMapper.selectList(queryWrapper);

        if (userInfoList != null) {
            return userInfoList;
        }

        return null;
    }

    /**
     * 按用户 ID 列表查询用户信息
     *
     * @param userIds 用户id集合
     * @return 用户基本信息集合
     */
    public List<UserInfo> queryUserInfoByUserIdList(List<Object> userIds) {
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("user_id", userIds);

        return this.userInfoMapper.selectList(queryWrapper);
    }


    /**
     * 根据用户id查询用户信息
     *
     * @param userId 用户id
     * @return 用户基本信息对象
     */
    public UserInfo queryUserInfoByUserId(Long userId) {
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        return this.userInfoMapper.selectOne(queryWrapper);
    }


    /**
     * 根据查询包装器查询用户信息
     *
     * @param queryWrapper 查询包装器
     * @return 用户基本信息对象集合
     */
    public List<UserInfo> queryUserInfoByQueryWrapper(QueryWrapper<UserInfo> queryWrapper) {
        return this.userInfoMapper.selectList(queryWrapper);
    }

    /**
     * 修改用户信息
     *
     * @param userInfo 用户信息
     * @return
     */
    public Boolean updateUserInfo(UserInfo userInfo) {
        UpdateWrapper<UserInfo> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("user_id", userInfo.getUserId());
        return this.userInfoMapper.update(userInfo, updateWrapper) == 1;
    }


}
